/-app
/-boot
/-imports
/-storage ...
/-storage/attached ...
/-storage/attached/api
/-storage/attached/indexedDB ...
DetectStorage.ts
FileData.ts
LoadStorage.ts
MetadataData.ts
UpdateStorage.ts
functions.ts
/-storage/attached/localStorage
/-storage/attached/webSQL
/-tests
/-typings
stringUtils.ts
teapo.html
1
module teapo.storage.attached.indexedDB { 
2
 
3
  export class UpdateStorage implements attached.UpdateStorage { 
4
 
5
    constructor(private _db: IDBDatabase) { 
6
    }
7
    
8
    update(file: string, property: string, value: string, callback?: (error: Error) => void) {
9
      var transaction = this._db.transaction(['files', 'metadata'], 'readwrite');
10
      transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: transaction'));
11
      var filesStore = transaction.objectStore('files');
12
      var getFile = filesStore.get(file);
13
      getFile.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: objectStore(files).get('+file+')'));
14
      getFile.onsuccess = (event) => {
15
        var file: FileData = getFile.result || { path: file };
16
        file[property] = value;
17
 
18
        var putFile = filesStore.put(file);
19
        putFile.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: objectStore(files).get(' + file + ')-put('+property+','+value+')'));
20
        putFile.onsuccess = (event) => {
21
          var metadataStore = transaction.objectStore('metadata');
22
          
23
          var metadataData = { property: 'editedUTC', value: Date.now() };
24
          var putMetadata = metadataStore.put(metadataData);
25
          putMetadata.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'update: objectStore(files)/get/put-objectStore(metadata).put(editedUTC,' + metadataData.value+')'));
26
          putMetadata.onsuccess = (event) => callback(null);
27
        };
28
      };
29
    }
30
 
31
    remove(file: string, callback?: (error: Error) => void) { 
32
      callback(new Error('Not implemented.'));
33
    }
34
  
35
  }
36
 
37
}